{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\r\n",
    "import numpy as np\r\n",
    "#读取数据\r\n",
    "df=pd.read_csv('D:\\study_notes\\master\\data\\dataAnalyst_sql.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>positionId</th>\n      <th>city</th>\n      <th>companyId</th>\n      <th>education</th>\n      <th>bottom</th>\n      <th>top</th>\n      <th>avg</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>2245819</td>\n      <td>上海</td>\n      <td>130876</td>\n      <td>本科</td>\n      <td>2</td>\n      <td>3</td>\n      <td>2.5</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>1605795</td>\n      <td>上海</td>\n      <td>58109</td>\n      <td>本科</td>\n      <td>2</td>\n      <td>4</td>\n      <td>3.0</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>2392372</td>\n      <td>北京</td>\n      <td>48294</td>\n      <td>硕士</td>\n      <td>4</td>\n      <td>8</td>\n      <td>6.0</td>\n    </tr>\n  </tbody>\n</table>\n</div>",
      "text/plain": "   positionId city  companyId education  bottom top  avg\n0     2245819   上海     130876        本科       2   3  2.5\n1     1605795   上海      58109        本科       2   4  3.0\n2     2392372   北京      48294        硕士       4   8  6.0"
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df=df.drop(25)\r\n",
    "a = df.bottom.astype(int)\r\n",
    "b = df.top.astype(int)\r\n",
    "df['avg']=(a+b)/2\r\n",
    "df.head(3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>positionId</th>\n      <th>city</th>\n      <th>companyId</th>\n      <th>bottom</th>\n      <th>top</th>\n      <th>avg</th>\n    </tr>\n    <tr>\n      <th>education</th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>不限</th>\n      <td>2</td>\n      <td>2</td>\n      <td>2</td>\n      <td>2</td>\n      <td>2</td>\n      <td>2</td>\n    </tr>\n    <tr>\n      <th>博士</th>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n    </tr>\n    <tr>\n      <th>大专</th>\n      <td>4</td>\n      <td>4</td>\n      <td>4</td>\n      <td>4</td>\n      <td>4</td>\n      <td>4</td>\n    </tr>\n    <tr>\n      <th>本科</th>\n      <td>30</td>\n      <td>30</td>\n      <td>30</td>\n      <td>30</td>\n      <td>30</td>\n      <td>30</td>\n    </tr>\n    <tr>\n      <th>硕士</th>\n      <td>2</td>\n      <td>2</td>\n      <td>2</td>\n      <td>2</td>\n      <td>2</td>\n      <td>2</td>\n    </tr>\n  </tbody>\n</table>\n</div>",
      "text/plain": "           positionId  city  companyId  bottom  top  avg\neducation                                               \n不限                  2     2          2       2    2    2\n博士                  1     1          1       1    1    1\n大专                  4     4          4       4    4    4\n本科                 30    30         30      30   30   30\n硕士                  2     2          2       2    2    2"
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.groupby(by='education').count()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>positionId</th>\n      <th>city</th>\n      <th>companyId</th>\n      <th>bottom</th>\n      <th>top</th>\n      <th>avg</th>\n    </tr>\n    <tr>\n      <th>education</th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>不限</th>\n      <td>2452249</td>\n      <td>北京</td>\n      <td>22246</td>\n      <td>10</td>\n      <td>4</td>\n      <td>15.0</td>\n    </tr>\n    <tr>\n      <th>博士</th>\n      <td>2530002</td>\n      <td>北京</td>\n      <td>93989</td>\n      <td>8</td>\n      <td>12</td>\n      <td>10.0</td>\n    </tr>\n    <tr>\n      <th>大专</th>\n      <td>2556720</td>\n      <td>北京</td>\n      <td>153676</td>\n      <td>12</td>\n      <td>18</td>\n      <td>15.0</td>\n    </tr>\n    <tr>\n      <th>本科</th>\n      <td>2580990</td>\n      <td>北京</td>\n      <td>148603</td>\n      <td>20</td>\n      <td>8</td>\n      <td>22.5</td>\n    </tr>\n    <tr>\n      <th>硕士</th>\n      <td>2392372</td>\n      <td>北京</td>\n      <td>75604</td>\n      <td>10</td>\n      <td>8</td>\n      <td>15.0</td>\n    </tr>\n  </tbody>\n</table>\n</div>",
      "text/plain": "           positionId city  companyId  bottom top   avg\neducation                                              \n不限            2452249   北京      22246      10   4  15.0\n博士            2530002   北京      93989       8  12  10.0\n大专            2556720   北京     153676      12  18  15.0\n本科            2580990   北京     148603      20   8  22.5\n硕士            2392372   北京      75604      10   8  15.0"
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.groupby(by='education').max()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": "education\n不限    15.0\n博士    10.0\n大专    15.0\n本科    22.5\n硕士    15.0\nName: avg, dtype: float64"
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.groupby(by='education').avg.max()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": "city  education\n上海    不限            3.5\n      大专           12.0\n      本科           22.5\n北京    不限           15.0\n      博士           10.0\n      大专           15.0\n      本科           19.0\n      硕士           15.0\nName: avg, dtype: float64"
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.groupby(by=['city','education']).avg.max()#有两个排序情况下用列表进行groupby"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "('上海',     positionId city  companyId education  bottom top   avg\n",
      "0      2245819   上海     130876        本科       2   3   2.5\n",
      "1      1605795   上海      58109        本科       2   4   3.0\n",
      "3      2527100   上海      57577        本科       3   4   3.5\n",
      "4      2531473   上海       7069        本科       4   6   5.0\n",
      "6      2549808   上海      47993        大专       7  14  10.5\n",
      "7      2028802   上海      10215        本科      10  20  15.0\n",
      "8      2480295   上海      30830        本科       8  15  11.5\n",
      "9      2536296   上海      47993        本科      10  20  15.0\n",
      "10     2439826   上海      54000        本科      15  30  22.5\n",
      "11     2274995   上海      21218        本科      10  20  15.0\n",
      "12     2065573   上海      82809        本科       8  15  11.5\n",
      "13     2566134   上海      24587        本科      10  20  15.0\n",
      "14     1897377   上海      32042        本科      10  15  12.5\n",
      "15     1969335   上海      21236        本科      10  15  12.5\n",
      "16     1533700   上海     117258        本科      10  20  15.0\n",
      "17     2580542   上海      28095        本科      10  15  12.5\n",
      "20     2188681   上海     122536        本科      20  25  22.5\n",
      "21     2284485   上海      51480        本科      10  18  14.0\n",
      "22      643853   上海      22246        不限       3   4   3.5\n",
      "23     2576426   上海      64597        本科       5   8   6.5\n",
      "24     2442611   上海     110338        本科      12  18  15.0\n",
      "26     2556720   上海     153676        大专       6  12   9.0\n",
      "27     1725864   上海      15175        本科       8  15  11.5\n",
      "28     2499870   上海      13629        大专       8  16  12.0\n",
      "29     2393474   上海      78151        本科      15  20  17.5\n",
      "30     2580990   上海     112731        本科       6   8   7.0\n",
      "32     2462306   上海      99520        本科      10  20  15.0\n",
      "35     1969276   上海      21236        本科      12  15  13.5\n",
      "38     2224743   上海      75569        本科      15  25  20.0\n",
      "39      680072   上海      27155        本科       6  12   9.0)\n",
      "('北京',     positionId city  companyId education  bottom top   avg\n",
      "2      2392372   北京      48294        硕士       4   8   6.0\n",
      "5      2427570   北京       7502        本科       6   8   7.0\n",
      "18     2530002   北京      93989        博士       8  12  10.0\n",
      "19     2468537   北京       5674        本科       8  15  11.5\n",
      "31     2452249   北京      15125        不限      10  20  15.0\n",
      "33     2391403   北京      26980        本科      10  15  12.5\n",
      "34     2375192   北京     148603        本科      15  23  19.0\n",
      "36     2490990   北京     151935        大专      12  18  15.0\n",
      "37     1978544   北京      75604        硕士      10  20  15.0)\n"
     ]
    }
   ],
   "source": [
    "for k in df.groupby(by='city'):\r\n",
    "    print(k)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "上海\n",
      "北京\n"
     ]
    }
   ],
   "source": [
    "for k,v in df.groupby(by='city'):\r\n",
    "    print(k)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "    positionId city  companyId education  bottom top   avg\n",
      "0      2245819   上海     130876        本科       2   3   2.5\n",
      "1      1605795   上海      58109        本科       2   4   3.0\n",
      "3      2527100   上海      57577        本科       3   4   3.5\n",
      "4      2531473   上海       7069        本科       4   6   5.0\n",
      "6      2549808   上海      47993        大专       7  14  10.5\n",
      "7      2028802   上海      10215        本科      10  20  15.0\n",
      "8      2480295   上海      30830        本科       8  15  11.5\n",
      "9      2536296   上海      47993        本科      10  20  15.0\n",
      "10     2439826   上海      54000        本科      15  30  22.5\n",
      "11     2274995   上海      21218        本科      10  20  15.0\n",
      "12     2065573   上海      82809        本科       8  15  11.5\n",
      "13     2566134   上海      24587        本科      10  20  15.0\n",
      "14     1897377   上海      32042        本科      10  15  12.5\n",
      "15     1969335   上海      21236        本科      10  15  12.5\n",
      "16     1533700   上海     117258        本科      10  20  15.0\n",
      "17     2580542   上海      28095        本科      10  15  12.5\n",
      "20     2188681   上海     122536        本科      20  25  22.5\n",
      "21     2284485   上海      51480        本科      10  18  14.0\n",
      "22      643853   上海      22246        不限       3   4   3.5\n",
      "23     2576426   上海      64597        本科       5   8   6.5\n",
      "24     2442611   上海     110338        本科      12  18  15.0\n",
      "26     2556720   上海     153676        大专       6  12   9.0\n",
      "27     1725864   上海      15175        本科       8  15  11.5\n",
      "28     2499870   上海      13629        大专       8  16  12.0\n",
      "29     2393474   上海      78151        本科      15  20  17.5\n",
      "30     2580990   上海     112731        本科       6   8   7.0\n",
      "32     2462306   上海      99520        本科      10  20  15.0\n",
      "35     1969276   上海      21236        本科      12  15  13.5\n",
      "38     2224743   上海      75569        本科      15  25  20.0\n",
      "39      680072   上海      27155        本科       6  12   9.0\n",
      "    positionId city  companyId education  bottom top   avg\n",
      "2      2392372   北京      48294        硕士       4   8   6.0\n",
      "5      2427570   北京       7502        本科       6   8   7.0\n",
      "18     2530002   北京      93989        博士       8  12  10.0\n",
      "19     2468537   北京       5674        本科       8  15  11.5\n",
      "31     2452249   北京      15125        不限      10  20  15.0\n",
      "33     2391403   北京      26980        本科      10  15  12.5\n",
      "34     2375192   北京     148603        本科      15  23  19.0\n",
      "36     2490990   北京     151935        大专      12  18  15.0\n",
      "37     1978544   北京      75604        硕士      10  20  15.0\n"
     ]
    }
   ],
   "source": [
    "for k,v in df.groupby(by='city'):\r\n",
    "    print(v)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "20.0\n",
      "13.0\n"
     ]
    }
   ],
   "source": [
    "for k,v in df.groupby(by='city'):\r\n",
    "    print(max(v.avg)-min(v.avg))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "language_info": {
   "name": "python",
   "nbconvert_exporter": "python"
  },
  "orig_nbformat": 2
 },
 "nbformat": 4,
 "nbformat_minor": 2
}